{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pulse gates\n",
    "\n",
    "Most quantum algorithms can be described with circuit operations alone. When we need more control over the low-level implementation of our program, we can use _pulse gates_. Pulse gates remove the constraint of executing circuits with basis gates only, and also allow you to override the default implementation of any basis gate.\n",
    "\n",
    "Pulse gates allow you to map a logical circuit gate (e.g., `X`) to a Qiskit Pulse program, called a `Schedule`. This mapping is referred to as a _calibration_. A high fidelity calibration is one which faithfully implements the logical operation it is mapped from (e.g., whether the `X` gate calibration drives $|0\\rangle$ to $|1\\rangle$, etc.).\n",
    "\n",
    "A schedule specifies the exact time dynamics of the input signals across all input _channels_ to the device. There are usually multiple channels per qubit, such as drive and measure. This interface is more powerful, and requires a deeper understanding of the underlying device physics.\n",
    "\n",
    "It's important to note that Pulse programs operate on physical qubits. A drive pulse on qubit $a$ will not enact the same logical operation on the state of qubit $b$ -- in other words, gate calibrations are not interchangeable across qubits. This is in contrast to the circuit level, where an `X` gate is defined independent of its qubit operand.\n",
    "\n",
    "This page shows you how to add a calibration to your circuit.\n",
    "\n",
    "**Note:** Not all providers support pulse gates."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build your circuit\n",
    "\n",
    "Let's start with a very simple example, a Bell state circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXEAAADuCAYAAADPwDeGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAdm0lEQVR4nO3de3SU1d328W/OJxKSAJpAAgEBBQIBAjwmUjUU5CxgRW2poBUVixVaS1B8HytdFkSo632tDxWEarXlUJVaCwjUokIpIAGCIGc0NgkZHkMCYRIChMn7xzQpIRPITGYysyfXZy1WMvdh37+B4Zp97/sUUF1dXY2IiBgp0NsFiIiI6xTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwYK9XYDUV10NFy97uwrnhAZBQIC3q/Af1dXVVFRUeLsMp0RGRhKgD0GzU4j7oIuXYfZqb1fhnAX3Q5g+TW5TUVFBq1atvF2GU6xWK1FRUd4uo8XRcIqIiMEU4iIiBlOIi4gYTCEuImIwhbiIiMEU4iIiBlOIi4gYTCEuImIwhbiIiMEU4iIiBlOIi7QQbdq0oXPnznTp0oWEhASn1582bRrJyckeqEyaQne7EPFTSUlJTJ48mVtvvZX09HTat29fZ/6ZM2fYs2cPu3btYuXKlezbt6/Btp599lnmzZvHiRMnyMrKIj8/39PlSyOpJy7iZwYPHsyaNWvIy8vjV7/6FWPHjq0X4ACxsbEMGTKE2bNnk5uby7Zt27j//vvrLVcT4AA33XQTI0eO9Ph7kMbz+xAvLi4mOzubrl27Eh4eTnJyMjNmzKC8vJxHHnmEgIAAXnvtNW+XKR5ks8GBAlixHd74FN7aChv3w9nz3q7MvVq1asVvf/tbtm7dyoQJEwgKCqqdV1payt///ndWrFjBH//4R9atW0dBQUGd9TMzM1m1ahWbNm2iY8eOQN0AB8jOzmbp0qXN84akUfx6OCU3N5eRI0disViIioqiZ8+enDx5kldffZUTJ05QUlICQN++fb1bqIcUHPyU9+dlMfj7C0kf/XOHy/y/HwaQ0nc0436+tpmrax47T8CGL6D0qltz5/7LHuRpHeHegRAV5p363KV///6sWbOGTp061U4rLCxk6dKlrFixguPHjztcLyEhgXHjxvHjH/+YPn36ADBs2DAOHDjA2rVr+f73v1+7bHZ2NgsXLvTsGxGn+W1PvLi4mLFjx2KxWHj66acpKipiz549WCwWFixYwLp169i1axcBAQG1H17xLxv2w8od9QO8hq0a9n4D/3cjlBncK8/MzOSTTz6pDXCr1cr06dNJSUnhl7/8ZYMBDmCxWFiyZAlpaWmMGjWqdqw7OjpaAW4Ivw3xp556ioKCAp588kkWLVpEdHR07bzs7GzS0tKoqqoiJSWFmJgYL1YqnrAnz94Db4xvz8Gyz+yhbprevXuzfv362s/wP//5T3r37s3ixYupqqpyqq2PPvqI1NRU9u7dW2f6H/7wBwW4D/PLED906BCrV6+mbdu2zJ8/3+Ey6enpAKSlpdWZ/vXXX3P33XcTHR1NXFwckydP5vTp0x6vWdynuhr+dsC5df51Go5aPFOPp4SGhrJixQpat24NwMaNGxk6dCh5eXkutzl9+nT69etXZ9rdd9+tUwt9mF+G+MqVK7HZbEyaNKnBR1xFREQAdUP83LlzZGVlUVBQwMqVK1m6dClbt25lzJgx2Gy2ZqndE6ouVnD+XLHDP/7oq2+h6Kzz6/3jqPtr8aTnn3+e1NRUAPbu3cs999zD+fOujwtdfRBz9+7dAMTExLBs2bKmFSse45cHNjdv3gxAVlZWg8vUHJm/MsSXLl1KYWEhW7ZsqT06n5SURGZmJh9++CHjx4/3XNEetOP9X7Dj/V94u4xmc/ika+sdOmnvxZvwrN+uXbsye/ZsAC5evMjkyZOb9GBlR2ehLFmyhAMHDpCcnMxdd93FxIkTeffdd5tcu7iXX4b4N998A1DnSP2Vqqqq2LZtG1A3xNeuXcvgwYNrAxwgIyODLl268Ne//tXlEB8wYAAWS+P31YNCIpjw4jGXtuVIatZjdPuviQ7n/fmlYW7ZRvdu3bh8yTeODvYd9yJdMx9yer3LNujU+SZsVRfcX5STrrfn98QTTxAcbP/vO3/+fA4ccHL86AqOArxmDHzatGmsW7cOgJ/85CfXDPFu3boRGOiXO/fNIiEhgZycHKfX88sQLy8vB2hw13L16tUUFxcTHR1N586da6cfPHiQiRPrh12vXr04ePCgy/VYLBYKCwsbvXxwWKTL23IkNqEbHVOHurXNq50sOknVBdd7gu6UUvK/Lq1nu1xF/jdfubka94uIiODhhx8G7J/xV1991eW2rhXgAOvXr+fAgQOkpqbyne98h969e7N//36HbRUVFblch7jOL0M8ISGB0tJS9uzZQ0ZGRp15RUVFzJo1C4A+ffoQcMW+c2lpKbGxsfXai4+P58iRI02qxxlBIREub8tb2ie295me+KUzJ1xar7RgHx06dHBzNa6x2WwNhuKIESOIi4sDYNWqVbXXOzjregFeY/HixSxevBiAH/zgBzz77LMO20tMTFRPvAlcuZ8N+GmIDx06lEOHDrFgwQKGDRtG9+7dAdi1axcPPvggxcX2A3rNdZGPs7tIF6pg9moPFeMhR48dI8xHPk2XbTD3A+fP/X7qgXTemVNw/QWbQXl5eYMH5QcMGFD7+1/+8heX2m9sgNdsoybEr9z21Y4dO0ZUVJRL9Yjr/PJrMzs7mzZt2pCfn0+vXr3o3bs33bp1Y9CgQXTp0oUhQ4YA9U8vjIuL48yZM/XaKykpIT4+vjlKFzcICoTB3Z1bJyYC+jo+hOJzak6PBec7COBcgAOcPHmydq+gf//+Tm9PPMsvQzwpKYmtW7cyevRowsPDycvLIz4+niVLlrBu3TqOHrWfS3Z1iPfo0cPh2PfBgwfp0aNHs9Qu7vHdnpCa1Lhlw4Jh6h0QEnT9ZX3BLbfcAsDp06edOtYCzgd4jdzcXMA+tHjjjTc6tU3xLB/ZAXa/Hj16sHZt/fuBWK1W8vLyCAwMrD3HtsaYMWOYM2cOBQUFJCXZE2Dnzp2cOHFCV6wZJigQHhoM7+fAjuPQ0MWYbVrBw9+BJIN2tCwWC4GBgU6d8QQwa9YslwIcID8/n8LCQs6fP197Voz4hoDq6moDLzZ23c6dO7n11lu5+eabOXz4cJ15ZWVl9O7dm7Zt2zJ37lwqKyvJzs6mXbt2bN++vdkO2pg4Jr7gfnxmTPxqp62w/Th8kQ/fltkDPTgQHr4deiSCLx6Lu9aYuKuGDx/OBx98QHh4uEfuhWK1WjUm7gU++PH1rJrTo64eSgH7lWmbN28mMTGRBx54gKlTp5KZmcnatWt11N1gbVrBmL4wZ6x97Bvsdy3s1cE3A9xTNm7cyPjx43n66ae1Z+lHfLTv5DnXCnGw3/Te0TCMiD/YuHEjGzdu9HYZ4kYtqB9id70QFxExSYvridfcV0VExB+0uJ64iIg/UYiLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYjCFuIiIwRTiIiIGU4iLiBhMIS4iYrAWd+8UE4QG2e/PbZJQQ56KY4rIyEisVqvb2lu4ZBVl5RXEREUy6/EH6r12h8jISLe0I85RiPuggADffcCCNI+AgAC3PmAhNCyc0EuXCQ0LJyoqqt5rMZeGU0REDKYQFxExmEJcRMRgCnEREYMpxEVEDKYQFxExmEJcRMRgCnEREYMpxEVEDKYQFxExmEJcRMRgCnEREYMpxEVEDKYQFxExmEJcRMRgCnEREYMpxEVEDKbnx4iIT6qurqaiosLbZTRaZGQkAQEBzb5dhbiI+KSKigpatWrl7TIazWq1euVRdxpOERExmEJcRMRgCnEREYMpxEVEDKYQlxbDVg3V1fbfa36KmE5np4jfOnUWvsiHghLIL4GS8v/MK6uEVzdBUjzcdAP06gDBQd6rVcRVCnHxK7Zq2J8P/zgKx05de9mvvrX/2XIEosMhoyvc1h1aRzRPrSLuoBAXv3HaCqt2XD+8HTlXCZsO2AN9QjoM6gJeuG5DxGkKcfELn38F7+2Ci1VNa6fyEqzcAfv+BT/MhMgw99Qn4ik6sCnG++QQrNje9AC/0sGT8NrHYK10X5sinqAQF6P94yj8ZY9n2j55Bl7fbO+di4SEhJCQkODtMurRcIoYq6AE1uR4eBul8Ofd8P1bPbsd8YyIiAgGDBhAeno66enpJCYmEhoaysWLFzl58iS7d+9m9+7d5OTkUFnZ8G5XSEgI7777LqmpqWRlZZGfn9+M7+LaFOJipKrL9iEUm5Pne/9sBMREQNl5eGVD49bZeQLSkqFnB+frFO/o3r07TzzxBA899BCxsbENLvfggw8CUFJSwu9+9ztef/11Tpw4UWeZmgAfN24cAOvWraNv377YbDaP1e+MFjGcUlxcTHZ2Nl27diU8PJzk5GRmzJhBeXk5jzzyCAEBAbz22mveLlOc8Nlh+3CHs2IiIDbS/tMZf/rc/sUhvi02NpY333yTI0eOMHPmzGsG+JXi4+P5+c9/zvHjx3njjTeIiYkB6gd4RUUFM2fO9JkAhxbQE8/NzWXkyJFYLBaioqLo2bMnJ0+e5NVXX+XEiROUlJQA0LdvX+8WKo122QZbjzbvNs9U2C8c6p/SvNuVxhsxYgTLli2jQ4f/7DKdP3+ed999ly1btrB7926OHz9OZWUl4eHhdO/enfT0dO644w6+973vER4eDsDUqVMZPnw4jz32GNOmTasT4GPHjmXz5s1eeX8N8esQLy4uZuzYsVgsFp5++ml+8YtfEB0dDcDLL7/M7NmzCQ4OJiAggD59+ni5Wmmsg4X2UG1u/ziqEPdVjz/+OIsXLyYw0D64cPbsWV588UWWL19OaWlpveWtVit79uxhz549vPHGG8yYMYOpU6fy3HPPER0dTXJyMuvXr699yIOvBjj4+XDKU089RUFBAU8++SSLFi2qDXCA7Oxs0tLSqKqqIiUlpXb3SXxfztfe2e5X39ovKBLfMnXqVF5//fXaAP/oo4/o1asXixYtchjgjpw+fZoFCxaQmprKxx9/DFAb4BcuXPDZAAc/DvFDhw6xevVq2rZty/z58x0uk56eDkBaWlrttJrQHzRoEGFhYV553JJc2zenvbftfC9uW+rLzMxkyZIlta8XLFjAqFGjKCwsdKm9oqIiysvL60wLDg6mrKysSXV6kt+G+MqVK7HZbEyaNKnBRzxFRNiPbl0Z4sePH+f9998nISGBgQMHNkut0njnKr0zlFIjv8R725a6IiIiePPNN2t74L/+9a955plnXG7v6oOYly7ZLxAICgrizTffJDQ0tOlFe4DfhnjNrk9WVlaDyxQUFAB1Q/z222+nqKiIDz/8kKFDh3q2SHGa5YyXt3/Wu9uX/5g7dy7du3cHYPv27WRnZ7vclqOzUEaPHs3u3bsBSE1N5b//+7+bXrQH+O2BzW+++QaATp06OZxfVVXFtm3bgLohXvOt7k4DBgzAYrG4vd2WKLHHUG576C2H82rOAb+WmPD//HxhQsPLNXQe+Sdb/sncH97XuGJ9yISHZxLVKoYiSxFJSUn1Xvuia53G17p1a6ZPnw5AZWUlDz/8sMun/TkK8JoxcIvFQk5ODqGhoTz11FO89NJL9YZbanTr1q1J+ZGQkEBOjvNXr/ltiNf8RZ8/f97h/NWrV1NcXEx0dDSdO3f2aC0Wi8XlMTqpK7RdcYPzas4Bb4zAwMYve6ULlZVG/lvaLl+u/VlYWFjvtWmmTJlCZKT9H3DZsmUcOXLEpXauFeAA+/fv5+2332bq1KnExMQwadIkli5d6rCtoqIil2poKr8N8YSEBEpLS9mzZw8ZGRl15hUVFTFr1iwA+vTp4/GDl754vwVTtY5uuKtd5vj7uo6YcHuA22z2B0M421ZQwOU65yGbIjAoqPZnhw4d6r32RTabrcFgfPTRR2t/X7x4sUvtXy/Ar2x/6tSptdttKMQTExOb3BN3hd+G+NChQzl06BALFixg2LBhtWNnu3bt4sEHH6S42N6ja46LfFzZRRLHrJXwf953PK8xl9G/MMHeAy+rhBf+7Pz2H7x3GH/6VYHzK3rZvP/5I2XWchITEikoKKj32heVl5c7PCkhLi6O1NRUAHbu3MmhQ4ecbruxAQ6wd+9e9u3bR1paGv379ycqKsrhkMqxY8eIiopyupam8tsDm9nZ2bRp04b8/Hx69epF79696datG4MGDaJLly4MGTIEqDseLr6vVbhrwyDuktzGe9sWu/79+9f+vmPHDqfXdybAr95OYGCgz13d7bchnpSUxNatWxk9ejTh4eHk5eURHx/PkiVLWLduHUeP2q/bVoibp1Nb7227Y7z3ti12/fr1q/295uyRxnIlwK/ezpVfIr7Ab4dTAHr06MHatWvrTbdareTl5REYGFi7WybmGNjZ/uSd5nbTDRDv+JIDaUbx8f/5JnXmlrCuBvjV24mLi3OiWs/z6xBvyJdffkl1dTXdu3evPcJ9pffeew+AgwcP1nmdkpLCgAEDmq9Qcahne4iLhNJmvuhncPfm3Z44tnTpUjZt2kRERARffPFFo9dLS0tj+PDhgPP3QsnJyWHkyJFUVlby1VdfuVS3p7TIEN+/fz/Q8FDKxIkTHb6eMmUKb731lkdrk+sLDITbb/HcE30ciYuEPsnNtz1pWF5eHnl5eU6vl5OTw/jx41mxYgUTJ0506l4oxcXFbNjQyBvQNzOFuAPV1U4+aUCa3e03w+48+9N9msP9t0KQ3x5Bajk2btxISkoK586d83YpbtMiP5bXC3HxfUGB8AMXgrXsvP3eK405p7xGRle4JdG57Yjv8qcAhxbaE/fVW0qKc9rHwb0DYfXOxq/T2Eey1UiOh3G+dTKCSB0tsicu/iOjK0xI90zbSXHweBaEh3imfRF3aJE9cfEvd9wCUWHw7udwoco9baYmwaQMiPDNu4+K1FKIi18Y0Nl+HveqHXCkCTeMjAyFewZAegroeSBiAoW4+I24KJg2BL4stD8P87ATN5VrHQGZ3ex/osM9V6OIuynExa8EBNiHQlKT4NtzsD/f/jSeghIotkLN2aMRofYx76R4ew++R3udQihmUoiL32oXDUN61p122WYP+kANlYifUIhLi6LetvgbfaRFRAymEBcRMZhCXETEYApxERGD6cCmiPikyMhIrFarW9pauGQVZeUVxERFMuvxBxqc1hSOnk3QHBTiIuKTAgIC3Pbg4dCwcEIvXSY0LLy2TUfTTKThFBERgynERUQMphAXETGYQlxExGAKcRERgynERUQMphAXETGYQlxExGAKcRERgynERUQMphAXETGYQlxExGAKcRERgynERUQMphAXETGYQlxExGAKcRERgynERUQMphAXETGYQlxExGAKcRERgynERUQMphD3AQsXLiQjI4O4uDhiY2MZPHgwGzZs8HZZIte0fv16+vbtS1hYGCkpKbzyyiveLqlZbdmyhXHjxtGpUycCAgJ48cUXvVKHQtwHbN68mR/96Ed88sknfP7552RmZjJmzBi2bdvm7dJEHMrJyWHcuHGMHDmS3NxcXnjhBebMmcPrr7/u7dKajdVqpWfPnrz88sskJCR4rY5gr21Zan300Ud1Xr/88sts2LCBNWvWcNttt3mpKpGGvfLKKwwcOJD58+cD0KNHD7788kteeuklpk2b5uXqmseoUaMYNWoUALNnz/ZaHQpxH2Sz2SgrKyMqKsrbpYhhLly8xDeFp+pNr7p8ufbn0a8L6r2+0o1t42gdfe3P3rZt23jkkUfqTBsxYgSLFi2ioKCApKSkpryNJvlX4SkqL16qM83R+23o7yAiLJTk9jc0U7VNpxD3QfPmzePMmTM89thj3i5FDBMSEszWz/dxLK/Q4fyK85X87k/rG3wdG9OKmT+697rbKSoqqjeEUPO6qKjIqyFecvYcq/662eG8q9+vo2k/HD+MZI9W6F4aE/cxixcvZt68ebz33nte/Y8gZgoMCODeUXcSER7m0voTR91JeFiom6tqXn17dqXPLV1cWrd/andSb+7s5oo8SyHuQxYtWsSsWbP48MMPGTp0qLfLEUO1jo5i/DDnj6UMHtibmzq1b9SyiYmJWCyWOtNOnTpVO8/bxt81mJhWkU6tExvTiruHZnqoIs9RiPuI559/nrlz57J+/XoFuDRZWs+upPW4qdHL39g2juG3D2z08rfddhsbN26sM23Dhg106tTJJ/YgIyPCuXfUnY1ePgC4b7SZeyEKcR8wc+ZMFi5cyDvvvMPNN9+MxWLBYrFw9uxZb5cmBht312BiWl3/4HhQYCD3jckiJLjxh8h++tOf8vnnn/Pcc89x+PBhfv/73/Ob3/yGZ555piklu1X3zklk9O/VqGUHD+xDl46N2wupYbVayc3NJTc3l4sXL2KxWMjNzeX48eOulOuygOrq6upm3aLUExAQ4HD6lClTeOutt5q3GPErx74uYPlVB/KuNvz2gWRl9HO67XXr1jFnzhwOHz5MQkICM2bM4Gc/+5mrpXrExUtV/Oat9/m2pOEO0Y1t43hyygSnvsQAPv30U7KysupNv+OOO/j000+dLdVlCnHDfJ1fRFJCO0JCdGKRNM6HH2/jn7u/dDivU4cbefwHYwkM9N+d8vyi/+W37/wFm4OoCwoMZPqUCbS/oY0XKnMP//2X80PnrBUs/9N6Xl66irNlVm+XI4YYccd/0S4+tt700JBg7hud5dcBDpCceANDMvs7nDfsOwOMDnBQiBvls537qKq6TFxMNDHXuRhDpEZoSDD3j8kiMLDusN2Y72bSJi7GS1U1r6yMfiQntqszLSUpgdsH9fFSRe6jEL/C5cuXeeedd7jrrrto164dYWFhdOzYkREjRrBs2TIu//sKL284Z61gR+5BAIYOTm9wHF3EkaTEdnw3M732dY+uHRnY52YvVtS8goJqDt4GARAaGsLE0Xf6xV6I+e/ATcrKyhg2bBiTJ0/mb3/7G6GhoaSlpWGz2di0aROPPvoo586d81p9Nb3wju1vpFtKB6/VIea6M6MvyYk3EBURzj0jbm9xHYF28bGMyroVgLFDMmgT6x97ITqw+W8TJ06svUry7bffrnPU+dSpUyxfvpwZM2a4dD+T3/x+Dees512uzWazYa2wrx8ZHkawk0fRRWrYqm3YbDaCg1ruZ+jipUuEhoR4u4x6oltF8JMp9zi9nkIc2L17NwMGDCA4OJi9e/eSmprq1vbn/c8fKbOWu7VNEfEvMa2imDN9ktPrtdyv4yt88MEHAIwePdrtAQ72b1hXqRcu0jK4mhNKBODgQfsBw4yMDI+078ouUo21f9/OP3L207H9jTzxw7tb3DimiFybQhz7QU2A1q1be6R9V8fEr+yFF5ecYf7iFe4uTUR8hKtj4gpxICbGfpTaU/cqOWc93+Qx8YrKC8AF9xQkIn5DIQ706tWLNWvWsH37do+078pYl8bCRVoWV8fEdXYKsHfvXvr3709ISAi5ubn07NnT2yVpLFxEGkUX+wD9+vXjvvvu49KlS4wcOZLPPvuszvxTp04xf/58ysub5zRBXZ0pIo2lnvi/lZWVMW7cuNpbSHbo0IH27dtTVFREYWEh1dXVlJaWEhsb6/Fa1AsXkcZST/zfYmJi+Pjjj1m+fDl33nknFRUV7Nu3j8DAQIYPH87y5cuJjo5ullpaRUUQHhaqXriIXJd64j6q8sJFwkJDFOIick0KcRERg2k4RUTEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAymEBcRMZhCXETEYApxERGDKcRFRAz2/wHoKkgHdFVPHgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 454.517x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit import QuantumCircuit\n",
    "\n",
    "circ = QuantumCircuit(2, 2)\n",
    "circ.h(0)\n",
    "circ.cx(0, 1)\n",
    "circ.measure(0, 0)\n",
    "circ.measure(1, 1)\n",
    "\n",
    "circ.draw('mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build your calibrations\n",
    "\n",
    "Now that we have our circuit, let's define a calibration for the Hadamard gate on qubit 0.\n",
    "\n",
    "In practice, the pulse shape and its parameters would be optimized through a series of Rabi experiments (see the [Qiskit Textbook](https://learn.qiskit.org/course/quantum-hardware-pulses/calibrating-qubits-using-qiskit-pulse) for a walk through). For this demonstration, our Hadamard will be a Gaussian pulse. We will _play_ our pulse on the _drive_ channel of qubit 0.\n",
    "\n",
    "Don't worry too much about the details of building the calibration itself; you can learn all about this on the following page: [building pulse schedules](06_building_pulse_schedules.ipynb)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit import pulse\n",
    "from qiskit.pulse.library import Gaussian\n",
    "from qiskit.providers.fake_provider import FakeValencia\n",
    "\n",
    "backend = FakeValencia()\n",
    "\n",
    "with pulse.build(backend, name='hadamard') as h_q0:\n",
    "    pulse.play(Gaussian(duration=128, amp=0.1, sigma=16), pulse.drive_channel(0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's draw the new schedule to see what we've built."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MxERERERUU3GkStEb7nQ0FCMHDmSiRUiIiIiIqJy4sgVIiIiIiIiIiI1cEFbFRQVFeHhw4cwNjausB1ViIiIiIiIiKhiCSGQkZEBW1tbaGhU3WQdJldU8PDhQ9jZ2VV3GERERERERESkgvv376NevXpVdj4mV1Qg3e3k5q1opTufEBEREREREVH1y8jIQDMnxyp/dmdyRQXSqUDGxsYwMTGp5miIiIiIiIiIqCRVvaQHdwsiIiIiIiIiIlIDkytERERERERERGpgcoWIiIiIiIiISA1MrhARERERERERqYHJFSIiIiIiIiIiNTC5QkRERERERESkBiZXiIiIiIiIiIjUwOQKEREREREREZEamFwhIiIiIiIiIlIDkytERERERERERGpgcoWIiIiIiIiISA1MrhARERERERERqYHJFSIiIiIiIiIiNTC5QkRERERERESkBiZXiIiIiIiIiIjUwOQKEREREREREZEamFwhIiIiIiIiIlIDkytERERERERERGpgcoWIiIiIiIiISA1MrhARERERERERqYHJFSIiIiIiIiIiNTC5QkRERERERESkBiZXiIiIiIiIiIjUwOQKEREREREREZEamFwhIiIiIiIiIlIDkytERERERERERGpgcoWIiIiIiIiISA1a1R0AERERkbqux2tW6fnesS+s0vMRERHR643JFSIiInotVHWCRB3qxMrEDBER0ZuHyRUiIiKqMjUpgVJZSroHTLwQERHVTEyuEBERUYViAqX8mHghIiKqmbigLRERERERERGRGjhyhYiIiMqMo1OqHke1EBERvb6YXCEiIiKlmECpOZh4ISIiql6cFkREREREREREpAaOXCEiInqLcXTKm4+jWoiIiCofR64QEREREREREamBI1eIiIjeYByZQiUp7f3BkS1ERESq4cgVIiIiIiIiIiI1cOQKERFRDcfRKVRZuF4LERGRajhyhYiIiIiIiIhIDRy5QkREVANwdAq9bjiqhYiI6F8cuUJEREREREREpAaOXCEiInpNcHQKvSk4qoWIiN42HLlCRERERERERKQGjlwhIiKqQhydQm87jmohIqI3EUeuEBERERERERGpgSNXiIiIKhhHpxCVD0e1EBFRTcWRK0REREREREREamByhYiIiIiIiIhIDZwWREREVA6c+kNUtThliIiIXmccuUJEREREREREpAaOXCEiIlKCI1OIao7SPq8c2UJERJWNI1eIiIiIiIiIiNTAkStERPTW4ugUorcD12shIqLKxpErRERERERERERq4MgVIiJ6o3F0ChGVhKNaiIioInDkChERERERERGRGphcISIiIiIiIiJSA6cFERFRjcepP0RUGThliIiIVMWRK0REREREREREauDIFSIiqhE4OoWIXicc1UJERC/jyBUiIiIiIiIiIjVw5AoREb02ODqFiN4EHNVCRPT24cgVIiIiIiIiIiI1cOQKERFVGY5MIaK3XWn/DnJkCxFRzcSRK0REREREREREauDIFSIiqlAcnUJEVH5cr4WIqGbiyBUiIiIiIiIiIjVw5AoREZUZR6cQEVU9jmohInp9MblCRERKMYFCRFRzMPFCRFS9OC2IiIiIiIiIiEgNHLlCRPQW4+gUIqI3H0e1EBFVPo5cISIiIiIiIiJSA0euEBG94Tg6hYiIisNRLUREFYPJFSKiGo7JEyIiqgyl/f+FyRcion8xuUJEVAMwgUJERK8bjnohIvoX11whIiIiIiIiIlJDjR65IpFI5H7X0tKCqakpbGxs0LZtW/Tp0wd+fn7Q0ir+MnNycrBw4ULs3LkT9+7dg4WFBXx9fbFgwQLUrVu3si+BiEiGo1OIiOhNwVEtRPS2kQghRHUHUV7S5EpAQAAAoKioCGlpabh9+zaio6MhhEDjxo2xbds2tG/fXqH/8+fP4eXlhfDwcNjY2MDd3R1xcXE4f/48rKysEB4ejkaNGiE9PR2mpqZ4kPAQJiYmVXqNRPRmYQKFiIioeEy8EJG60tPTUa+uLdLS0qr0+f2NSK4ou4TY2Fh89dVX2L17NwwMDPDXX3/B2dlZrs3s2bPxn//8B25ubvjtt99gZGQEAFi+fDmmTZsGDw8PnD59mskVIioTJlCIiIgqHhMvRKQKJlfKoaTkitTo0aOxbt06tGnTBpGRkbLyvLw81K5dG2lpaYiMjESbNm3k+rVu3RpXr17FxYsX0aRJEyZXiEgOEyhERESvDyZeiEiqupIrNXrNFVUsW7YMO3fuxN9//40///wTXbp0AQD89ddfSEtLg4ODg0JiBQAGDRqEq1ev4vDhw5g6dWpVh01EVYAJEiIiojeDOv9PZ2KGiCrCG59cMTU1Ra9evbBnzx6EhobKkitXrlwBALi4uCjtJy2/evVq1QRKRJWCCRQiIiIqCRffJaKK8MYnVwDA2dkZe/bswc2bN2Vl9+7dAwDUq1dPaR9peXx8fOUHSESlYpKEiIiIqlp5v38wKUP09nkrkiu1atUCAKSkpMjKMjMzAQAGBgZK+xgaGgIAMjIyKjk6ojcLkyBERET0tqus70NM2hC9vt6K5Ip0wVvpArjlFRUVJUu6ENUU91PNqzsEIiIiIqoA/9yt2vPZmaWU3ojoNZOVlVUt530rkitPnz4FAFhYWMjKpNsuZ2dnK+0jfUGMjY1lZb18e1ZWiERERERERERUQ70VyZW///4bANC8eXNZWf369QEADx48UNpHWm5vby8r++X4rxy5QkRERERERPSaysrKqpaBEW98ciUtLQ2//vorAMDLy0tW3rp1awBAZGSk0n7S8latWsnKWrZsWaX7ZBMRERERERGR6tLT06vlvBrVctYqNG3aNGRlZaFdu3Zwc3OTlXfu3BmmpqaIjY3F5cuXFfrt2bMHANCnT5+qCpWIiIiIiIiIaqA3Nrnyzz//4P3338e6detgaGiIdevWydXr6Ohg4sSJAIAJEybILXqzfPlyXL16FR4eHmjbtm2Vxk1ERERERERENcsbMS1oxIgRAICioiKkp6fj9u3buHXrFoQQaNKkCbZv346WLVsq9Js9ezZ+//13nD17Fk2aNIG7uzvi4+MREREBKysrrF+/voqvhIiIiIiIiIhqGomQ7lNcA726tbKWlhZMTExga2uLtm3bws/PD3379oWmZvH7zOfk5GDhwoXYvn077t+/DwsLC/j6+mLBggWoV68egBdztkxNTfEg4SHXXCEiIiIiIiJ6TaWnp6NeXVukpaVV6fN7jU6uVBUmV4iIiIiIiIhef9WVXHlj11whIiIiIiIiIqoKTK4QEREREREREanhtU2uHD9+HM7OztDT04NEIkFqamp1h0REREQEADh48CCcW7dCQkJCdYdCREREr4HXcreg5ORkDBkyBO+88w5Wr14NXV1dGBoaVndYREREVEESHjzA5s2bce7cOSQmPgEA2NrawrVdOwwaNBhNmzat5giJiIiIVPdaLmh7/Phx9OrVCydOnED37t2rOxwuaEtERFSB/ggLw4wZ06GlpYVevXvDsakjJBoSxN2Nw8mTv+PRo0c4euwX2NraVneoxSosLERBQQF0dHQUdi8kIiKi6lNdC9q+liNX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YWJiUvXBEREREREREVGp0tPTUa+uLdLS0qr0+b1S1lwhIiIiIiIiInpbMLlCRERERERERKQGJleIiIiIiIiIiNRQaQva1jRceoaIiIiIiIiIyoMjV4iIiIiIiIiI1MDkChERERERERGRGphcISIiIiIiIiJSA5MrRERERERERERqYHKFiIiIiIiIiEgNTK4QEREREREREamByRUiIiIiIiIiIjVoVXcANYEQAgCQkZFRzZEQERERERERUXGkz+3S5/iqwuSKCqQvTjMnx2qOhIiIiIiIiIhKk5ycDFNT0yo7n0RUdTqnBioqKsLDhw9hbGwMiURS3eGoLD09HXZ2drh//z5MTEyqOxyiKsX3P73t+Bmgtxnf//Q24/uf3nZpaWmoX78+UlJSYGZmVmXn5cgVFWhoaKBevXrVHUa5mZiY8B9Wemvx/U9vO34G6G3G9z+9zfj+p7edhkbVLjHLBW2JiIiIiIiIiNTA5AoRERERERERkRqYXHmD6erqYt68edDV1a3uUIiqHN//9LbjZ4DeZnz/09uM739621XXZ4AL2hIRERERERERqYEjV4iIiIiIiIiI1MDkChERERERERGRGphcISIiIiIiIiJSA5Mrb6CcnBzMnTsXTZs2hZ6eHmxtbfHxxx8jISGhukMjUlt2djYOHDiAUaNGwdHREXp6ejA0NETr1q3xzTffIDMzU6GPRCIp9cfb27saroao7Dw9PUt8Lx8/frzUY3Tv3l3W/sGDB1UQNVHFuXDhAoYMGQJbW1toa2vDzMwM7u7u2LBhA15dSjA6OhorVqzA0KFD4eDgIHvfx8XFVU/wRCq4dOkSFi1ahAEDBqBevXqy921pNm7ciPbt28PIyAgWFhbo3bs3zp49W2z73NxcLF68GC4uLjAyMoKuri4aNmyITz75BP/8809FXhKRysr6/j906BACAgLQsmVL1KpVC9ra2qhduzZ69+6NI0eOqHzeBQsWyM61devWcsXOBW3fMM+fP4eXlxfCw8NhY2MDd3d3xMXF4fz587CyskJ4eDgaNWpU3WESldvatWvxySefAACaNWuGFi1aID09HWfPnkVGRgacnJwQFhaG2rVry/qMGDGi2OMdPXoUT58+xdy5czF//vzKDp9IbZ6enggLC8PAgQNhZGSkUD9t2jS0bNmy2P4bN27EyJEjIZFIIITA/fv3Ua9evcoMmajC7N27F++//z4KCwvh4uKCxo0bIykpCWfOnEFBQQGGDRuGbdu2ydp/9tlnCAoKUjjO3bt30aBBgyqMnEh1/fr1w8GDBxXKS3psk77X9fX10aNHDzx//hwnT56EEAJ79uxBv3795Nq//MxgZmaGTp06QU9PD5GRkYiLi4OxsTFCQ0PRtm3bir48ohKV9f0/aNAg7Nu3D++88w7q168PY2NjxMXFISIiAgDw5Zdf4r///W+J54yOjkbr1q2Rl5cHIQS2bNkCf3//sgcv6I3y9ddfCwDCzc1NZGRkyMqXLVsmAAgPD4/qC46oAmzcuFGMGTNG3LhxQ6784cOHok2bNgKAGDp0qErHSklJEbq6ugKAuH37dmWES1ThPDw8BABx9+7dMvdNTEwUFhYWokePHsLe3l4AEPfv36/4IIkqQX5+vqhdu7YAILZt2yZXd+PGDWFhYSEAiFOnTsnK165dK2bOnCn27Nkj4uLihKOjY7k/P0RVZdGiRWLOnDni0KFD4tGjR7LvKsU5ceKEACAsLS3lvs+cPXtW6OjoCDMzM5GSkiLXJygoSAAQ7dq1E6mpqbLygoICMXHiRAFAdO3atcKvjag0ZX3/R0ZGiqdPnyqUh4eHCyMjIyGRSMTVq1eL7V9UVCS6du0q6tSpI/z8/AQAsWXLlnLFzuTKGyQ3N1eYmpoKACIyMlKhvlWrVgKAuHjxYjVER1T5zp49KwAIXV1dkZubW2r7n376SQAQHTt2rILoiCqGOsmVYcOGCT09PRETE8PkCtU4UVFRAoBwdHRUWj958mQBQCxevLjYYzC5QjVRaQ+XvXr1EgDEihUrFOqkn4ulS5fKlQ8cOFAAEDt27FDo8+zZMwFA6Ovrqx07kbpKe/+XZNSoUQKACAoKKraN9Hlg69atIiAgQK3kCtdceYP89ddfSEtLg4ODA9q0aaNQP2jQIADA4cOHqzo0oirRunVrAC/mECcnJ5faXjqf8sMPP6zUuIheB8ePH8f27dvx9ddfw8HBobrDISozXV1dldpZWlpWciREr4+cnBycOnUKwL/f9V9W3Pd/VT5P/CxRTaetrQ0A0NHRUVr/+PFjzJgxA926dcPw4cPVPh+TK2+QK1euAABcXFyU1kvLr169WmUxEVUl6eJr2trasLCwKLHtvXv3cObMGWhra+P999+vivCIKtS6deswfvx4TJw4Ed9//z3u3btXbNusrCyMGzcOTk5OmDFjRhVGSVRxGjVqBAcHB0RHR2P79u1ydTdv3sTWrVthbm6O/v37V1OERFUvOjoaubm5sLKyUrp+VnHf/3v06AEAWL58OdLS0mTlhYWFmDt3LgBg1KhRlRU2UaWLiorCrl27oK2tDR8fH6VtJk+ejJycHAQHB1fIObUq5Cj0WpB+sS5uYUJpeXx8fJXFRFSVpIsW+vr6lvoXmW3btkEIgV69evEvM1Qjffvtt3K/f/HFF5gzZw7mzJmj0Hbu3LmIi4vD6dOni/3rDdHrTlNTE5s2bcJ7772H4cOHY9myZWjSpAkSExNx5swZNG/eHBs3biw1uU70Jint+7+hoSHMzMyQkpKCjIwMGBsbAwD8/f1x/Phx7Ny5Ew0aNEDnzp2hp6eHS5cu4cmTJ5g+fbrS/58Qva4OHz6MvXv3Ij8/H/fu3cPZs2ehra2NkJAQpSN2jxw5gp9//hnz589HkyZNKiQGJlfeINItaA0MDJTWGxoaAgAyMjKqLCaiqnLs2DGsW7cO2traWLBgQantOSWIaqquXbti9OjR6NSpE2xsbHD//n3s2bMH3377LebOnQsTExNMmTJF1j4yMhJBQUEICAiAh4dHNUZOpL7OnTsjLCwM/fv3R2RkJCIjIwG8GPLt4+PDHRHprVPa93/gxTNAamqqXHJFU1MTW7duRf369bFkyRIcPXpU1t7FxQXdunWDpqZm5QZPVIGuXLmCTZs2yX7X19dHUFCQ0u/6mZmZGD9+PJo2bYqZM2dWWAycFkRENd6tW7fg7+8PIQS+++472dorxYmMjMSNGzdgZmaGPn36VFGURBXjm2++gb+/Pxo1agR9fX00bdoUX331FQ4cOAAACAwMRE5ODoAXw7tHjx4NMzMzLF26tBqjJqoYO3bsQPv27WFnZ4eIiAhkZmbi9u3bGDFiBJYtWwZvb2/k5uZWd5hEr72UlBR069YNP/zwA4KCgvDgwQM8e/YMBw4cQFJSEnr37o1du3ZVd5hEKps9ezaEEMjJyUFUVBRGjhyJMWPGwM/PD3l5eXJtv/rqK9y/fx/BwcEqr+elCiZX3iBGRkYAgOzsbKX1WVlZACDLWBO9CRISEuDr64uUlBRMnTpV7i/2xZGOWhk8eHCF/oNKVJ169OgBV1dXpKamIiIiAgCwcuVK/P3331iyZAlq1apVzRESqefOnTsICAhArVq1cOTIEbRv3x6GhoZo0qQJfvzxR7z33nuIjIzE+vXrqztUoipT2vd/QPkzwOeff46wsDD85z//weTJk1G3bl2Ym5vDz88P+/btgxAC06ZNQ35+fuVeAFEF09PTQ4sWLbB69WpMmjQJR44cwapVq2T158+fx+rVq/Hhhx/C29u7Qs/N5MobpH79+gCABw8eKK2Xltvb21dZTESV6dmzZ+jRowfi4+MxcuRIlf4yX1hYiJ07dwJ4Md+Y6E0inTP86NEjAC/mH0skEmzatAmenp5yP48fPwbwIsno6emJ48ePV1vcRKrYuXMn8vPz4evrK3ugfNmQIUMAAH/88UdVh0ZUbUr7/p+VlYXU1FSYm5vLkiuFhYXYsWMHAOU7DLm6uqJhw4ZISEiQbRZAVBNJpwQdPHhQVnbs2DEUFRUhKipK4buR9LvQf/7zH3h6emLRokVlOh/XXHmDSKdCSOcfv0pa3qpVqyqLiaiyZGZmolevXrhx4wYGDBiAkJAQSCSSUvudPHkSjx49gr29Pdzd3asgUqKqk5KSAuDfNbYAQAhR4sNmeHg4AGDEiBGVGhuRuqQPj6ampkrrpeXSzwHR28DR0RG6urpISkpCQkIC6tatK1ev7Pt/YmKibJoEP0/0JpOO2k1KSlKou3z5crH9bt26hVu3bqFBgwZlOh9HrrxBOnfuDFNTU8TGxip9s+zZswcAuMYE1Xi5ubnw8/PD+fPn0bNnT+zYsUPlRdekU4L8/f1VSsYQ1RRJSUk4c+YMgH+33jx9+jSEEEp/pKMY79+/DyEEkyv02rO2tgYAXLx4UWn9hQsXAKDMX4aJajJ9fX3Z1Iaff/5ZoV7Z938LCwvZznHKPk/p6emIjo4GwBHvVLOFhYUBgNxuQYGBgcV+NwoICAAAbNmyBUIIbNy4sUznY3LlDaKjo4OJEycCACZMmCCbXwm82MP+6tWr8PDwQNu2basrRCK1FRYWYujQoTh16hTc3d2xb98+lbeWzc7Oxv79+wFwlyCqmc6ePYsDBw6gsLBQrjwuLg79+/dHVlYW+vbtW+yWnEQ1mZ+fH4AX036Cg4Pl6sLDw7FixQoAyqc5EL3Jpk6dCgD49ttvcefOHVn5uXPn8OOPP8LMzAyjRo2Slevq6sLX11fWVzqVFACeP3+O8ePHIzs7G507d4aNjU0VXQVR2SUlJSEkJETpmkMnTpzAjBkzAAAjR46skng4LegNM3v2bPz+++84e/YsmjRpAnd3d8THxyMiIgJWVlZc5I1qvB9++EGWIKlVqxbGjx+vtN3SpUsVFvA8cOAAMjMz0a5dOzg6OlZ6rEQV7fbt2xg5ciSsra3h4uICMzMzxMfH49KlS3j+/DneeecdhISEVHeYRJXCxcUFX3zxBZYuXYrx48dj9erVaN68OR4+fIhz586hqKgIY8aMQffu3WV9IiMj5f4/ER8fDwDo37+/bEHz0aNHY/To0VV7MUQlOHr0KBYsWCD7XTqFp2PHjrKyOXPm4N133wUAdO/eHVOmTEFQUBCcnZ3h4+ODvLw8nDhxAkIIbNiwAWZmZnLnWL58OSIiInD58mU4OjrCzc0N+vr6uHDhAh4+fAgLCwusWbOm8i+W6BVlef9nZWVhzJgx+Oyzz9C2bVvUq1cPWVlZuH37Nm7dugXgxeLNAwcOrJLYmVx5w+jp6SE0NBQLFy7E9u3bceDAAVhYWGDEiBFYsGAB/5pJNd7Lc3+lSRZlAgMDFZIrL08JIqqJOnTogHHjxiEiIgIXLlxASkoKDA0N4ezsjMGDB2PcuHHQ19ev7jCJKs13332HTp06Yc2aNbh06RKio6NhbGwMDw8PfPLJJxg6dKhc+/T0dNnuWS97efq09C/4RK+LpKQkpe/bl8teXUNi5cqVcHZ2xg8//IATJ05AR0cH3bt3x5w5c9CpUyeFYzk4OODKlStYvHgxfvnlF/zxxx8QQsDOzg4TJkzArFmz+NxA1aIs7//atWtjyZIlOH36NK5fv46LFy+iqKgINjY2+OCDD/Dpp5/C09OzqkKHRAghquxsRERERERERERvGK65QkRERERERESkBiZXiIiIiIiIiIjUwOQKEREREREREZEamFwhIiIiIiIiIlIDkytERERERERERGpgcoWIiIiIiIiISA1MrhARERERERERqYHJFSIiIiIiIiIiNTC5QkREVEahoaEYOHAg6tatCx0dHZibm8PR0RGDBw/GDz/8gLS0tOoOkcrh9OnTkEgkGDFiRLXG4enpCYlEgri4uGqNo7w+/vhjGBoaIjExUeU+gYGBkEgk2LhxY5nO1a9fP9SpUweZmZlljJKIiKhiMblCRERUBt988w28vb2xb98+mJqa4r333kOPHj2gr6+Pffv2YdKkSbh582aVxTNixAhIJBKcPn26ys5J6pFIJGjQoEF1h1EpoqKisGnTJkyYMAG1a9dW+3gNGjSARCIptn7u3LlITEzEkiVL1D4XERGROrSqOwAiIqKa4tKlSwgMDIS2tjZ2796Nfv36ydU/fvwYW7duhZmZWbXER2+GzZs3Izs7G3Xr1q3uUMps9uzZ0NTUxBdffFEl53NxcUHPnj2xbNkyTJkyBZaWllVyXiIioldx5AoREZGK9u3bByEEhgwZopBYAQBra2t88cUXcHJyqvrg6I1Rv359ODk5QVtbu7pDKZP79+/jyJEj6NmzZ4WMWlGVv78/srOzsWnTpio7JxER0auYXCEiIlJRUlISAMDKykql9rm5uahVqxYMDAyQmpqqtM3Zs2chkUjg4eEhKxNCYNu2bejSpQvq1KkDPT092NnZoXv37li9erWsnUQikT1Qenl5QSKRyH5eXa/j+PHjePfdd2FlZQVdXV00atQIU6dORXJyskJML081+v3339G1a1cYGxujdu3a+OSTT2RryiQmJuLTTz9F3bp1oaenh/bt25drelJ+fj7WrFmDLl26wMzMDPr6+mjcuDFGjhyJS5cuAQD27NkDiUSCYcOGFXucMWPGQCKRYMOGDXLlWVlZWLx4MVxdXWFiYgJDQ0M4OTlhwoQJuH37tspxluUeKrNx40bZFJf4+Hi518vT01PWrrg1V6TTiQoKCrBgwQI0btwY+vr6aNasmdw1nzp1Cl5eXjAxMYG5uTk++uijYmMsKChAcHAw3NzcYGJiAn19fTg7O2PlypUoKChQ+d4AwPr161FUVIShQ4cW2+bQoUNwc3ODgYEBLC0tMXDgQKWvgXT9m/j4eNm1S39enVLVr18/6OvrIyQkpEzxEhERVSROCyIiIlKRnZ0dAGDv3r348ssvS/3rvK6uLgICArB8+XJs27YNEyZMUGgjfSAcM2aMrGzGjBlYunQpdHV10bVrV9SqVQuPHz/G1atXERMTIztOQEAA/vzzT8TGxqJnz56wtraWHcPIyEj237NmzcLixYuho6ODdu3awcbGBleuXMGKFStw6NAh/PXXX6hTp45CbPv378fq1avh5uYGX19fhIeHY+3atbhz5w727NkDNzc3FBYWwt3dHXFxcYiIiICvry8uXLiAli1bqnRPs7Ky0Lt3b/zxxx8wNDSUJVji4uKwbds2mJqaom3btvDz84O1tTX27duH5ORkhekfmZmZ2LFjB0xMTPD+++/Lyh89egQfHx9cv34d5ubm8PT0hK6uLv755x+sWbMGTZo0QdOmTUuNs7z38GWNGzdGQEAANm3aBENDQwwaNEhWV5bRTkOGDJElUBwcHBAWFoaPP/4YAGBsbIyhQ4eiY8eO6NmzJ86dO4ctW7bg7t27+OOPP+TWL8nJycG7776L0NBQWFhYoGPHjtDT00NERAQ+//xzhIaGYv/+/dDQUO1vcUeOHAEAuUTRy9asWYNx48ZBIpHA3d0dNjY2CA8PR/v27dGnTx+5ttbW1ggICMCePXuQlZWFgIAAWV2tWrXk2hoZGcHV1RVnzpzBP//8g0aNGqkULxERUYUSREREpJLY2Fihr68vAAhjY2MREBAgQkJCRGRkpCgoKFDaJzo6WkgkEtG6dWuFurS0NGFgYCDMzc1FTk6OEEKInJwcoaurK4yNjcU///wj1z4/P1/88ccfcmUBAQECgAgNDVV6/t27dwsAokWLFuLOnTuy8qKiIjF37lwBQLz//vtKj6mhoSGOHDkiK09PTxctWrQQAETz5s2Fv7+/yMvLk9XPnj1bABAfffSR0liUGTVqlAAgunbtKhITE+XqHj9+LMLDw2W/f/XVVwKAWLFihcJxQkJCBAAxbtw4ufJu3boJAGLIkCEiIyNDru7u3bviypUrst9DQ0MFABEQECDXrjz3sCQAhL29fbH1Hh4eAoC4e/euQj9pHC/fq1OnTgkAwsbGRlhaWsq9ZmlpaeKdd94RAMSpU6fkjjd+/HhZ7KmpqbLy9PR00bt3bwFABAcHq3RNGRkZQlNTU9ja2iqtj4uLE3p6ekJbW1scP35cVp6XlyeGDx8uu7YNGzbI9bO3txeqfF2dNm2aACDWr1+vUrxEREQVjckVIiKiMvj999+FnZ2d7GFQ+mNmZibGjRsnHj58qNDH29tbABDnz5+XKw8ODhYAxOTJk2VlT548EQCEs7OzSvGUllxp3bq1ACCioqIU6oqKioSzs7PQ1NQUSUlJCsf09/dX6BMUFCQACBMTE/Hs2TO5utTUVCGRSEpMHLwsISFBaGpqCl1dXREXF1dq+7i4OKGhoSGaN2+uUNehQwcBQERGRsrKIiIiBABRu3ZtkZ6eXurxi0uulOcelkTd5Mrvv/+u0KdNmzalvmbz5s2TlT158kRoa2sLOzs7kZ2drdDn0aNHQkdHR7Rq1Uqla5Leay8vL6X10iSUssTb06dPhYGBgVrJFWly7eXPEhERUVXimitERERl0K1bN8TExGDfvn0YO3YsXFxcoKWlhdTUVAQHB8PZ2RnR0dFyfcaOHQsACmtCKJsSVLt2bdSrVw+XL1/GrFmz8M8//5Q71sTERFy5cgVNmjRBixYtFOolEgk6d+6MwsJC2domL+vRo4dCmXTKhaurK8zNzeXqTE1NYWFhgUePHqkU3+nTp1FYWAhfX1/Y29uX2t7e3h6+vr64ceMGzp49KyuPiopCREQEXF1d0aZNG1n577//DgAYOnQojI2NVYrpVerew4qmra2tdNqN9HUp6TV7+XU5ffo08vPz4evrC319fYU+1tbWaNKkCaKiopCTk1NqXImJiQCg8J6QOnPmDADggw8+UKiztLRUGndZWFhYAPh3XSQiIqKqxuQKERFRGeno6KB///4IDg7GpUuXkJSUhODgYJibmyMxMRETJ06Ua9+vXz9YW1tjx44dyMzMBABERkYiMjISbm5ueOedd+Tab9q0CVZWVli8eDEcHBzQoEEDBAQE4JdffilTnNIFUe/cuSO3IOjLP9IFcp8+farQX9lWwNK1XIrbJtjIyAh5eXkqxXf//n0AgIODg0rtAeWJKul/f/LJJ2of/1Xq3sOKZm1tDU1NTYXykl4XaV1ubq6sTHpdISEhxV7X9evXIYTAs2fPSo1LushxcUmshw8fAkCxSbRXF6ktKxMTEwAoduFoIiKiysYFbYmIiNRkZmaGsWPHwtbWFn5+fggNDUV2djYMDAwAvBht8PHHH+O///0vdu7cidGjR2Pt2rUAFBMCAODt7Y2YmBgcOXIEx48fx+nTp7F582Zs3rwZAwcOxJ49e1SKq6ioCMCLB/KePXuW2FbZQ29JC5mqushpRevduzfs7Oywe/duBAUFQUdHB1u3boWRkVGJu9SUl7r3sKKVdt9VfV2k1+Xs7IzWrVuX2FZXV7fU45mamgIAMjIyVDp/RZMmd8zMzKrl/EREREyuEBERVRBvb28AQGFhIVJTU2XJFeDF1J9FixYhJCQEw4YNw/bt2xV2tnmZiYkJhg0bJtt6ODw8HIMHD8bevXtx7Ngx9O7du9R46tWrB+DF7iobN25U8+oqnnT3pdjYWJX7aGpq4pNPPsHcuXOxbds2mJiYICUlBaNHj1YYNVGe47/qdb+H5SW9ri5dumDVqlVqH0+6c1Zxo1xsbGwQHR2N+Ph4NG/eXKFeuuVyeaWkpABQfZt0IiKiisZpQURERCoSQpRYHxMTA+DFtKFXt4uVrhdy/vx5zJ49G2lpaRg+fLhcAqYkHTt2xIcffggAuHbtmqxcR0cHAFBQUKDQp169enBycsKNGzdw+/Ztlc5TlTw9PaGpqYlff/1VNoVHFaNHj4aWlhZCQkKKnRIEAN27dwcAuelYZVUZ91BbW1vp61WVvLy8oKmpiSNHjiA/P1/t473zzjvQ0tJSWG9Iyt3dHQCwe/duhbpnz57ht99+U9qvpPf3y27evAngxUgcIiKi6sDkChERkYrmzJmD6dOnKx0JkZCQgE8//RQA0LdvX9lD4cuk64WsWLECgPKEwL1797Bx40ZkZ2fLlT9//hyhoaEA/h2RAQC2trYAUOxD7Zw5c1BUVISBAwfi8uXLCvXJyckKC+1WFVtbW3z00Ud4/vw5AgICkJycLFefmJiIiIgIhX42Njbo27cv/v77b4SFhaFVq1Zo3769Qrv27dvDy8sLiYmJGDNmDLKysuTq4+LiEBUVVWqcFX0PbW1t8eTJk2pdH6Ru3br4+OOPERcXh6FDh+LJkycKbWJiYrB3716VjmdoaIg2bdrg0aNHSEhIUKgfOXIkdHV1sW3bNtlCwwCQn5+Pzz//XOG1kSrt/S11/vx5AICHh4dK8RIREVU0TgsiIiJSUWZmJoKCgrB06VI0bdoUzZs3h56eHh48eICIiAjk5+ejcePGWLlypdL+0vVC7t+/r7CzjdSzZ88wcuRITJgwAa6urqhXrx6ysrJw9uxZJCUlwdXVFQMGDJC179OnD7755ht88cUXOHHihGzEzOLFi2FpaYlhw4bh+vXr+O9//4u2bdvC2dkZDg4OEEIgNjYWV69ehZGRkdJET1UICgpCdHQ0QkNDYW9vj65du8LExATx8fGIjIzEuHHj0KFDB4V+Y8eOxb59+wDI77b0qi1btqBbt27YsWMHfv31V3Tp0gW6urqIjY3F5cuXsWzZMrRs2bLEGCv6Hvbt2xerVq2Ci4sLOnXqBD09PTg6OmL69Okq9a8oQUFBiIuLw969e3H8+HE4Ozujfv36yMrKwo0bNxATEwM/Pz8MHDhQpeO9++67uHDhAk6fPo3hw4fL1TVs2BDLli3DxIkT0bNnT3Tt2hXW1tYIDw9HSkoKhg8fjm3btikcs2/fvggLC0O3bt3g5eUFQ0ND1KpVC4sWLZK1yczMxMWLF+Hk5CTbGYmIiKjKVe9O0ERERDVHUlKS2LJli/D39xctW7YUlpaWQktLS1hYWIjOnTuLJUuWiMzMzBKP4e/vLwCIH3/8UWl9enq6WLZsmejdu7do0KCB0NPTE5aWlsLV1VWsWLFCZGVlKfTZtm2bcHFxEfr6+gKAACDu3r0r1yYsLEwMHjxY2NraCm1tbWFpaSlatWolJk6cKMLCwuTaBgQECAAiNDRU4VyhoaECgAgICFAav729vSjr14vc3FwRFBQk2rdvL4yMjIS+vr5wcHAQI0eOFJcuXVLaJycnR2hrawt9fX2RkpJS4vHT09PFN998I1q1aiX09fWFkZGRcHJyEhMnThR37txR+drKcg9LkpmZKSZOnCjs7OyElpaWACA8PDxk9R4eHkpfQwDC3t5e6THL+5oVFBSITZs2CW9vb2FhYSG0tbWFra2tcHNzE/PnzxfR0dEqX9e9e/eEpqam6N27d7Ft9u/fLzp06CD09fWFubm58PPzEzdv3hTz5s0TAMSGDRvk2ufn54vZs2cLBwcHoa2trfQebN68WQAQy5YtUzlWIiKiiiYRopQJ5ERERFQhsrOzUbduXRQUFODhw4fFbltLpduxYweGDRuGgICAN2qh2Zquf//+OHLkCO7fvw9ra+sqOWfPnj3x559/4t69e7C0tKyScxIREb2Ka64QERFVkdWrVyM1NRUBAQFMrKghPz8fixcvBgBMmDChmqOhly1YsABFRUVYunRplZwvMjISv/32G6ZNm8bEChERVSuOXCEiIqpEycnJmDlzJp48eYJjx47BwMAAN2/elG2FS6o7dOgQDhw4gPPnz+P69evo168f9u/fX91h0Ss+/vhj7Nq1C3fv3pVt0VxZ+vXrh3PnziE2NhZGRkaVei4iIqKSMLlCRERUieLi4tCwYUPo6OigZcuWWLp0KTw9Pas7rBopMDAQ8+fPh7m5OXr16oVVq1bBwsKiusMiIiIiYnKFiIiIiIiIiEgdXHOFiIiIiIiIiEgNTK4QEREREREREamByRUiIiIiIiIiIjUwuUJEREREREREpAYmV4iIiIiIiIiI1MDkChERERERERGRGphcISIiIiIiIiJSA5MrRERERERERERqYHKFiIiIiIiIiEgN/wcl/DTOyzoaFgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1300x165 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "h_q0.draw()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Link your calibration to your circuit\n",
    "\n",
    "All that remains is to complete the registration. The circuit method `add_calibration` needs information about the gate and a reference to the schedule to complete the mapping:\n",
    "\n",
    "    QuantumCircuit.add_calibration(gate, qubits, schedule, parameters)\n",
    "\n",
    "The `gate` can either be a `circuit.Gate` object or the name of the gate. Usually, you'll need a different schedule for each unique set of `qubits` and `parameters`. Since the Hadamard gate doesn't have any parameters, we don't have to supply any."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "circ.add_calibration('h', [0], h_q0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lastly, note that the transpiler will respect your calibrations. Use it as you normally would (our example is too simple for the transpiler to optimize, so the output is the same)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['id', 'rz', 'sx', 'x', 'cx', 'reset']\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdoAAADuCAYAAACeeMagAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAme0lEQVR4nO3dd3hUdb7H8fekFxLpRQIEAgiBEEJvEsIFCQiLqICKiMqirgrYgJX1UbKuAlKulIuwgmVFgXsVFUHBggKiLDWglIUQAiQmaGgpEEiZ+8eYgZg6kzmZmfB5PQ+PmZlTvrObzGfOrx2T2Ww2IyIiIobwcHYBIiIi1ZmCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCXswsQMZvhar6zq3BNPp5gMjm7CimJ2Wzm0qVLzi7DJgEBAZj0C1XlFLTidFfzYdoaZ1fhmmaPBl/9lbqkS5cuUaNGDWeXYZOsrCwCAwOdXcYNR03HIiIiBlLQioiIGEhBKyIiYiAFrdzQkg99x4L7TezZMLfUbRbcb+LTuUOrsCoRqU4UtCIiIgZS0IqIiBhIQSsiImIgzdATAfKuXuJyZrqzyxCRakhBKwLs+Ogldnz0krPLEJFqSEErArSPeYRW3UeW+NrHswZWcTUiUp0oaEWAmg1b0bT9AGeXITe4hg0bEhAQgNlsJiMjg7Nnz1Z4Xy8vL5577jkWLFjA5cuXDaxSbKXBUG7kyy+/JDY2ljp16hAQEEBERAQzZ87k6tWrzi5NROwQGRnJrFmz+Oabbzh//jypqakcP36cxMRE0tPTSUlJYd26dUyfPp0mTZqUehwvLy/ef/99Zs6cyaeffoq/v38Vvgspj4LWTcybN49BgwaxadMmgoKCuOWWWzhy5AjTp08nJiZG32BF3Mjo0aPZvn078fHxTJs2jf79+1OzZs1i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0v+Rm2vH7VJEHKxnS/jqYNUuh2gCeumetC7h6aefpl69evj5+dl0X9ihQ4favXbxqlWr2LlzJ5cvX+ann36yq26juHzQgqXNff369cWez8rKIikpCQ8PD9q3b++EyqpOv379dJMCcRu1AqFjU9h3surO2S5Ed+5xFfYG3VtvvUWdOnV44oknbF67OCEhwWXXlneLoC3NwYMHMZvNtG7dusTO7w8//BCAQ4cOFXkcGhpKly5dqq5QkRvQHZ3gSCpcvmr8uXy94C79SVcLc+bMYenSpWRmZjq7FIdx66At/NZUWrNx4TyuPz4eN24c77zzjqG1idzobgqAOzvD+z/atl/h/NiKzLktdEdnDYKqTqpTyEI1D1o1tYo4V5fmkPgb/GhDi15F5tper2tz6BFm2z4iVcnlRx2XpbygFRHnMplgZFdLGBohqhnc00MjjcW1ufUVbeE6yCLiujw84N6eltWevj7kmJHIJiCmLQztaDm+iCtz66AVEffgYYLbO1pGBq/6Ec5k2H+sekFwX09oXv50dhGXoKAVkSoTWheeGwK7T8D3RyHlfMX3bVQT+rS2NEP76JNL3Ih+XUWkSnl7Wha06BEGJ89apgAln4PTZy0jjc1YmoaD/C3rFofUhlsaWq5g1Rcr7khBKyJOYTJZrnBD6157zmyGArOlqVmhKtWFglZEXIbJBJ4KWKlmNF5PRETEQApaERERAyloRUREDKSgFRERMZAGQ4mIiM0CAgLIyspy2PHmLFtNRvYlggMDmPLoPcUeO0JJd3mrCgpaERGxmclkIjDQcbdM8vH1wyc3Hx9fPwIDA4s9dmdqOhYRETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWinXnDlz6NmzJ7Vq1aJmzZr06dOHjRs3OrssESnH559/TseOHfH19SU0NJT58+c7u6QqtXXrVoYPH06zZs0wmUz84x//cEodClop1+bNm3n44Yf59ttv2blzJ7169WLo0KFs377d2aWJSCl2797N8OHDGTx4MPHx8cyYMYPp06ezdOlSZ5dWZbKysggPD+e1116jYcOGTqvDy2lnFrfxxRdfFHn82muvsXHjRtauXUvv3r2dVJWIlGX+/Pl07dqVmTNnAtC2bVsOHjzIrFmzeOyxx5xcXdUYMmQIQ4YMAWDatGlOq0NBKzYrKCggIyODwMBAZ5ci4nYuZmZzJv18sefz8vOt/z16IrnY4+s1a9wAXx/vMs+zfft2xo8fX+S52NhY5s6dS3JyMiEhIZV5G3YrMJs5npSC+Q/P2/L+awXXoF6dmlVQrWMoaMVmr776KhcuXOCRRx5xdikibsfXx5uPvtjCxczsEl+/dDmHt/7381IftwoNoeWoweWeJzU1tVhzaeHj1NRUpwWth8nEkcRTbN/9c4mvl/f+vb08mfTQXYbX6UjqoxWbLFmyhFdffZUPP/zQaX+oIu7Mz9eHUbfH2LWvv58vdw+JxsNkcnBVVSu2bzfq23lFOiSmB/Vq27evsyhopcLmzp3LlClTWLduHQMGDHB2OSJuK6zZzfTpEmHzfnfc1oebgirWZdOoUSPS0tKKPHfmzBnra87k7e3F6KH98fCw7QtD6+Yh9IgKN6gq4yhopUJefPFF4uLi+PzzzxWyIg4wKLor9evUqvD2kW3DiGwbVuHte/fuzaZNm4o8t3HjRpo1a+YSrVGNG9ZlQO/OFd7e38+XuwdHY3LDq3kFrZTrqaeeYs6cObz33nvccsstpKWlkZaWxsWLF51dmojb8vbyYvSwGDw9yv8YDq4RyPDb+th0/KeffpqdO3fyt7/9jSNHjvDuu++yaNEi/vrXv9pbssNF9+hI05sbVGjbEbf1IbiCV/OFsrKyiI+PJz4+nqtXr5KWlkZ8fDwJCQn2lGs3k9ls/uPgL5EiSvsGOW7cON55552qLUakmvn2x31s2rqrzG3Gjx5Cq1Dbr0I3bNjA9OnTOXLkCA0bNmTy5Mk888wz9pZqiPTzF1n49kdczc0rdZuO4S25Z1h/m4/93XffERNTvD88Ojqa7777zubj2UtBKw517mIm+fn5bjdYQcRZCgoKWPbBZ5xMOVPi6706t+dPA3pVcVVV69/xh/l407YSX7spKJCnHr4bfz/fKq7KcdR0LA61actO5i//P7bvKXnovogU5eHhwajbY/DxLj7bsl7tmgyO7uaEqqpWt8g2tAlrWuJrI4f0c+uQBQWtONCv6ec5cPg4ZrOZ0BDnLXcm4m7q1ApmaP+eRZ7z8DAxemgM3iUEcHVjMpm4K7YvAf5FA7V35/a0DG3spKocR0HrZvLz83nvvfe47bbbqFevHr6+vjRt2pTY2FiWL19O/u+rqTjDNz/sxQyEtwqlcYO6TqtDxB11/cNV3X/16kxIo3pOrKhqBdUI4M5Bfa2P69epSWw1uZpX0LqRjIwMBg4cyAMPPMBXX32Fj48PkZGRFBQU8OWXXzJhwgQyMzOdUlvh1SzAf/Xu5JQaRNyZyWTirsF9CfT3o0mj+vTr2dHZJVW59rc0p1P71r9fzfevNlfzGgzlRkaOHGldkelf//pXkdF0Z86cYcWKFUyePNnmNYgXvbuWzKzLlartUk4OeXn5eHl6EuDvV6ljidzI8vLz8PDwwMN0Y14HmTGTl5uHt3fZazlXtaAa/kwcd6dd+ypo3cSePXvo0qULXl5e7Nu3j/bt2zvs2K/+z/tkZJW87qqIiFjmMk9/Yoxd+1aP6/IbwCeffALA7bff7tCQBcs3tcrQ1ayIVHeV+ZxU0LqJQ4cOAdCzZ89ytrSdvc0hAL+evcB/L/9fAP4ydrgGQYmI/IGC1k1kZGQAcNNNNzn82JXpo72Uk4MZ8PL05N0PN5W7vYiIO6pMH62C1k0EBwcDGLK+cGbW5Ur30ebl56ufV0SkBApaN9GuXTvWrl3Ljz/+6PBj29v3oL5ZEblRVKaPVqOO3cS+ffvo1KkT3t7exMfHEx7u3HsyFvbNmoGJD96pvlkRkVLcmBO13FBUVBSjRo0iNzeXwYMHs2XLliKvnzlzhpkzZ5KdXTXNt5u1CpSISIXoitaNZGRkMHz4cOvtnRo3bszNN99MamoqKSkpmM1mzp8/T82aNQ2tQ1ezIiIVpytaNxIcHMzXX3/NihUr6NevH5cuXWL//v14eHgwaNAgVqxYQVBQkOF1XM3NpXHDerqaFRGpAF3Ril3MZjNXrubi5+vj7FJERFyaglZERMRAajoWERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERAyloRUREDKSgFRERMZCCVkRExEAKWhEREQMpaEVERAykoBURETGQglZERMRACloREREDKWhFREQMpKAVERExkIJWRETEQApaERERA/0/oLOftT/vDJUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 590.608x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit import transpile\n",
    "from qiskit.providers.fake_provider import FakeHanoi\n",
    "\n",
    "backend = FakeHanoi()\n",
    "\n",
    "circ = transpile(circ, backend)\n",
    "\n",
    "print(backend.configuration().basis_gates)\n",
    "circ.draw('mpl', idle_wires=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that `h` is not a basis gate for the mock backend `FakeHanoi`. Since we have added a calibration for it, the transpiler will treat our gate as a basis gate; _but only on the qubits for which it was defined_. A Hadamard applied to a different qubit would be unrolled to the basis gates.\n",
    "\n",
    "That's it!\n",
    "\n",
    "## Custom gates\n",
    "\n",
    "We'll briefly show the same process for nonstandard, completely custom gates. This demonstration includes a gate with parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 436.286x200.667 with 1 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit import QuantumCircuit\n",
    "from qiskit.circuit import Gate\n",
    "\n",
    "circ = QuantumCircuit(1, 1)\n",
    "custom_gate = Gate('my_custom_gate', 1, [3.14, 1])\n",
    "# 3.14 is an arbitrary parameter for demonstration\n",
    "circ.append(custom_gate, [0])\n",
    "circ.measure(0, 0)\n",
    "\n",
    "circ.draw('mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "with pulse.build(backend, name='custom') as my_schedule:\n",
    "    pulse.play(Gaussian(duration=64, amp=0.2, sigma=8), pulse.drive_channel(0))\n",
    "\n",
    "circ.add_calibration('my_custom_gate', [0], my_schedule, [3.14, 1])\n",
    "# Alternatively: circ.add_calibration(custom_gate, [0], my_schedule)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we use the `Gate` instance variable `custom_gate` to add the calibration, the parameters are derived from that instance. Remember that the order of parameters is meaningful."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 590.204x200.667 with 1 Axes>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circ = transpile(circ, backend)\n",
    "circ.draw('mpl', idle_wires=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Normally, if we tried to transpile our `circ`, we would get an error. There was no functional definition provided for `\"my_custom_gate\"`, so the transpiler can't unroll it to the basis gate set of the target device. We can show this by trying to add `\"my_custom_gate\"` to another qubit which hasn't been calibrated."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"Cannot unroll the circuit to the given basis, ['id', 'rz', 'sx', 'x', 'cx', 'reset']. Instruction my_custom_gate not found in equivalence library and no rule found to expand.\"\n"
     ]
    }
   ],
   "source": [
    "circ = QuantumCircuit(2, 2)\n",
    "circ.append(custom_gate, [1])\n",
    "\n",
    "\n",
    "from qiskit import QiskitError\n",
    "try:\n",
    "    circ = transpile(circ, backend)\n",
    "except QiskitError as e:\n",
    "    print(e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td><code>qiskit-terra</code></td><td>0.21.2</td></tr><tr><td><code>qiskit-aer</code></td><td>0.10.4</td></tr><tr><td><code>qiskit-ibmq-provider</code></td><td>0.19.2</td></tr><tr><td><code>qiskit</code></td><td>0.37.2</td></tr><tr><th>System information</th></tr><tr><td>Python version</td><td>3.10.7</td></tr><tr><td>Python compiler</td><td>GCC 12.2.0</td></tr><tr><td>Python build</td><td>main, Sep  6 2022 21:22:27</td></tr><tr><td>OS</td><td>Linux</td></tr><tr><td>CPUs</td><td>32</td></tr><tr><td>Memory (Gb)</td><td>125.64828109741211</td></tr><tr><td colspan='2'>Mon Sep 12 15:28:25 2022 EDT</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2022.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
